package com.ruoyi.device.mapper;

import java.util.List;
import org.apache.ibatis.annotations.Param;
import com.ruoyi.device.domain.UserAuthStatus;

/**
 * 用户认证状态Mapper接口
 * 
 * @author ruoyi
 * @date 2025-10-18
 */
public interface UserAuthStatusMapper 
{
    /**
     * 查询用户认证状态
     * 
     * @param id 用户认证状态主键
     * @return 用户认证状态
     */
    public UserAuthStatus selectUserAuthStatusById(Long id);

    /**
     * 查询用户认证状态列表
     * 
     * @param userAuthStatus 用户认证状态
     * @return 用户认证状态集合
     */
    public List<UserAuthStatus> selectUserAuthStatusList(UserAuthStatus userAuthStatus);

    /**
     * 根据设备ID查询用户列表
     * 
     * @param deviceId 设备ID
     * @return 用户认证状态集合
     */
    public List<UserAuthStatus> selectUserAuthStatusByDeviceId(String deviceId);

    /**
     * 新增用户认证状态
     * 
     * @param userAuthStatus 用户认证状态
     * @return 结果
     */
    public int insertUserAuthStatus(UserAuthStatus userAuthStatus);

    /**
     * 修改用户认证状态
     * 
     * @param userAuthStatus 用户认证状态
     * @return 结果
     */
    public int updateUserAuthStatus(UserAuthStatus userAuthStatus);

    /**
     * 删除用户认证状态
     * 
     * @param id 用户认证状态主键
     * @return 结果
     */
    public int deleteUserAuthStatusById(Long id);

    /**
     * 批量删除用户认证状态
     * 
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteUserAuthStatusByIds(Long[] ids);

    /**
     * 踢出用户(设置状态为未认证)
     * 
     * @param id 用户ID
     * @return 结果
     */
    public int kickoutUser(Long id);

    /**
     * 延长用户上网时间
     * 
     * @param id 用户ID
     * @param extendSeconds 延长秒数
     * @return 结果
     */
    public int extendUserTime(@Param("id") Long id, @Param("extendSeconds") Integer extendSeconds);

    /**
     * 根据MAC地址和设备ID查询用户
     * 
     * @param macAddress MAC地址
     * @param deviceId 设备ID
     * @return 用户认证状态
     */
    public UserAuthStatus selectByMacAndDevice(@Param("macAddress") String macAddress, @Param("deviceId") String deviceId);
}

